package haizhi.fruitmall.service;

import haizhi.fruitmall.pojo.po.OrderGoods;
import haizhi.fruitmall.pojo.po.OrderReceving;
import haizhi.fruitmall.pojo.po.Orders;
import haizhi.fruitmall.pojo.po.RecevingInfo;
import haizhi.fruitmall.pojo.po.RecevingInfoDefault;
import haizhi.fruitmall.pojo.po.UserReceving;

import java.util.List;
import java.util.Map;

import com.github.pagehelper.PageInfo;

public interface OrderService {

	// 添加订单
	public void addOrder(Orders order);

	// 订单中添加商品
	public void addOrderGoods(OrderGoods orderGoods);

	// 添加收货信息
	public void addRecevingInfo(RecevingInfo recevingInfo);

	// 添加订单与收货信息的关系
	public void addOrderReceving(OrderReceving orderReceving);

	// 添加默认收货信息
	public void addRecevingInfoDefault(RecevingInfoDefault recevingInfoDefault);

	// 添加用户与收货信息的关系
	public void addUserRecevingInfo(UserReceving userReceving);

	// 通过order_id删除订单
	public void deleteOrderById(String order_id);

	// 根据收货编号删除默认收货信息
	public void deleteRecevingInfoDefault(String receving_id);

	// 根据收货编号删除收货信息
	public void deleteRecevingInfo(String receving_id);

	// 根据收货编号删除用户与收货编号的关系（即user_receving表）
	public void deleteUserReceving(String receving_id);

	// 删除订单（1-多条件）
	public void deleteOrder(Orders order);

	// 根据order_id删除order_goods表
	public void deleteOrderGoods(OrderGoods orderGoods);

	// 删除订单的收货地址
	public void deleteOrderReceving(String order_id);

	public void updateOrder(Orders order, Map map);

	// 根据receving_id修改
	public void updateRecevingInfo(RecevingInfo recevingInfo);

	// 根据用户编号设置默认收货编号
	public void updateRecevingDefault(RecevingInfoDefault recevingInfoDefault);

	// 获得所有的用户订单,分页查询
	public PageInfo getPageInfoOfAllOrders(int currentPage, int pageSize);

	// 通过订单id获取订单信息
	public Orders getOrderByOrderId(String order_id);

	// 通过订单id获取订单中的商品(order_goods)
	public List<OrderGoods> getOrderGoodsByOrderId(String order_id);

	// 通过订单id获取Order_Receving关系
	public OrderReceving getOrderReceving(String order_id);

	// 查找某个用户的所有订单,分页查询（可根据订单状态来查询）
	public PageInfo getPageInfoOfOrderByUserName(Integer user_id,
			Byte order_status, int currentPage, int pageSize);

	// 通过receving_id获取recevingInfo
	public RecevingInfo getRecevingInfoByRecevingId(String receving_id);

	// 获得用户的默认收货信息
	public List<RecevingInfoDefault> getRecevingInfoDefaultByUserId(
			Integer user_id);

	// 通过user_id获得所有的receving_id
	public List<UserReceving> getUserRecevingByUserId(Integer user_id);
}
